关于python:正则表达式匹配大写单词,以及周围的+ – 4个单词

您所在的位置:网站首页 4个字母 单词 关于python:正则表达式匹配大写单词,以及周围的+ – 4个单词

关于python:正则表达式匹配大写单词,以及周围的+ – 4个单词

2024-07-12 02:14| 来源: 网络整理| 查看: 265

我有一堆文件,我对发现提到的临床试验感兴趣。这些字母总是用大写字母表示(如Aspire)。我想匹配所有大写的单词,超过三个字母。我还想要周围的+4个单词作为上下文。

以下是我目前拥有的。这是可行的,但没有通过下面的测试。

1234import re pattern = '((?:\w*\s*){,4})\s*([A-Z]{4,})\s*((?:\s*\w*){,4})' line = r"Lorem IPSUM is simply DUMMY text of the printing and typesetting INDUSTRY." re.findall(pattern, line) 相关讨论 你的问题能包括预期的结果吗?

您可以在Python中使用这段代码,该代码分两步完成。首先,我们将输入拆分为4+个字母大写的单词,然后在匹配的两边找到最多4个单词。

1234567891011121314151617import re str = 'Lorem IPSUM is simply DUMMY text of the printing and typesetting INDUSTRY' re1 = r'\b([A-Z]{4,})\b' re2 = r'(?:\s*\w+\b){,4}' arr = re.split(re1, str) result = [] for i in range(len(arr)):     if i % 2:         result.append( (re.search(re2, arr[i-1]).group(), arr[i], re.search(re2, arr[i+1]).group()) ) print result

代码演示

输出:

1[('Lorem', 'IPSUM', ' is simply'), (' is simply', 'DUMMY', ' text of the printing'), (' text of the printing', 'INDUSTRY', '')]

在左侧,您可以匹配任何单词字符\w+一次或多次,后面跟任何非单词字符\w+一次或多次。将这两种方法组合成一个非捕获组,重复4次{4},就像(?:\w+\W+){4}。

然后在一个组中捕获3个或更多的大写字符([A-Z]{3,})。

或者在右边,你可以将单词和非单词字符的匹配转为与左边的匹配的(?:\w+\W+){4}。

埃多克斯1〔6〕

捕获的组将包含大写单词,而捕获上的组将包含周围的单词。

相关讨论 在op的输入Lorem IPSUM is simply DUMMY text of the printing and typesetting INDUSTRY中,这个regex只找到一个匹配项,尽管有3个这样的大写字母单词。

以下Regex是否适用于您?

1(\b\w+\b\W*){,4}[A-Z]{3,}\W*(\b\w+\b\W*){,4}

测试地点:https://regex101.com/r/ntzlue/1/

相关讨论 在op的输入Lorem IPSUM is simply DUMMY text of the printing and typesetting INDUSTRY中,这个regex没有找到IPSUM。

这应该可以做到:

1pattern = '(?:(\w+ ){4})[A-Z]{3}(\w+ ){5}'



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3